package com.wjw.redis.stream.handler;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 订单支付超时处理类
 */
@Component
@Slf4j
public class OrderPaymentTimeout implements RedisDelayQueueHandle<Map<String, Object>> {
    @Override
    public void execute(Map<String, Object> map) {
        try {
            log.info("(收到订单支付超时延迟消息) {}", sanitizeLogOutput(map));
            // 实现订单支付超时，自动取消订单处理业务...
            // TODO: 实现订单取消等业务逻辑
        } catch (Exception e) {
            log.error("处理订单支付超时消息时发生异常: {}", e.getMessage(), e);
        }
    }

    /**
     * 对日志输出进行脱敏处理，避免敏感信息泄露。
     * @param data 原始数据Map
     * @return 脱敏后的数据Map
     */
    private Map<String, Object> sanitizeLogOutput(Map<String, Object> data) {
        // 示例：仅输出键名为"id"和"status"的值，避免输出其他可能包含敏感信息的字段
        Map<String, Object> sanitizedData = new HashMap<>();
        sanitizedData.put("orderId", data.getOrDefault("orderId", "N/A"));
        sanitizedData.put("status", data.getOrDefault("status", "N/A"));
        return sanitizedData;
    }
}